/* Copyright 2008 Shawn C. Dodd

This file is part of TagFC.  TagFC is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

TagFC is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License along with TagFC.  If not, see <http://www.gnu.org/licenses/>. */

class TimesheetController {
	def scaffold = Timesheet

	def accountService				// injected

	def listRecent = {
		if(!params.max) params.max = 48
		if(!params.sort) params.sort = "period"
		if(!params.order) params.order = "desc"
		if(!params.nickname) params.nickname = 1	// 1==Anonymous
		def nick = null
		if( request.post ) {
			// for form POST, given displayName wins
			nick = Nickname.findByDisplayName(params.displayName)
			// TODO  gracefully handle failed find
			if( params.paySheets ) {
				// pay off outstanding timesheets
				int piecesPaid = accountService.markAllAsPaid(nick.displayName)
				flash.message = "Marked $piecesPaid Pieces as Paid"
			}
		} else {
			// otherwise, given nickname (id) wins
			nick = Nickname.get(params.nickname)
		}
		params.displayName = nick.displayName
		
		params.unpaidPieces = accountService.summarizeUnpaid(nick.displayName)
		def lst = Timesheet.findAllByNickname(nick, [sort:params.sort,order:params.order,max:params.max,offset:params.offset])
		params.timesheetForNicknameCount = Timesheet.countByNickname(nick)
		[ timesheetList : lst ]
	}

    	def index = { redirect(action:'listRecent') }
}
